import axios from "axios";
import {getToken, removeToken} from "@/composables/cookie.js";
import {showMessage} from "@/composables/util.js";
import {useUserStore} from "@/stores/user.js";

// 创建 Axios 实例
const myAxios = axios.create({
    baseURL: "/api", // 你的 API 基础 URL
    timeout: 10000, // 请求超时时间
})

myAxios.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        const token = getToken()
        console.log('统一添加请求头中的 Token:' + token)

        // 当 token 不为空时
        if (token) {
            // 添加请求头, key 为 Authorization，value 值的前缀为 'Bearer '
            config.headers['Authorization'] = 'Bearer ' + token
        }

        return config;
    },
    error => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
)
myAxios.interceptors.response.use(
    response => {
        // 请求成功
        return response.data;
    },
    error => {
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        let status = error.response.status
        // 状态码 401
        if (status === 401) {
            // 退出登录
            let userStore = useUserStore()
            userStore.logout()
            // 刷新页面
            location.reload()
        }

        console.log(error);
        // 若后台有错误提示就用提示文字，默认提示为 '请求失败'
        let errorMsg = error.response.data.message || '请求失败'
        console.log(errorMsg);
        // 弹错误提示
        showMessage(errorMsg, 'error')
    }
)

// 暴露出去
export default myAxios;